<template>
<table
    class="water-cp-container"
    border="1">
    <tr class="top-container">
        <td class="left">
            氢氧同位素 基础数据
        </td>
        <td class="right">
            当前报告
        </td>
    </tr>
    <tr class="content-container">
        <td class="left">
            <div class="container">
                <div class="chart">
                    <MyChart
                        ref="MyChart">
                    </MyChart>
                </div>
            </div>
        </td>
        <td>
            <div class="right-container">
                <MyChart
                    class="chart"
                    ref="MyChart1">
                </MyChart>
            </div>
        </td>
    </tr>
    <tr class="bottom-container" v-if="false">
        <td
            colspan="2"
            class="container">
            低熟油型气
        </td>
    </tr>
</table>
</template>
<script>
/**
 * 氢氧同位素展示页面
 */
// import {Oval} from "@/common/Oval";
import {randomColor} from "@/common/ColorTools";
import {computedRem,randomEchartSymbol} from "@/common/OtherTools";
import MyChart from '@/components/MyChart';
import {getConvexHull} from "@/common/ConvexHull";
export default {
    components:{MyChart},
    props:{
        fontColor:{
            type:String,
            default:'',
        },
        borderColor:{
            type:String,
            default:'',
        },
        chartBorderColor:{
            type:String,
            default:'',
        },
        dataList:{  //数据
            type:Object,
            default:()=>{
                return {};
            },
        },
    },
    data() {
        this.nameConfigMap = {};  //数据根据名称的配置
        return {};
    },
    watch:{
        dataList:{
            handler(value){
                this.$nextTick(()=>{
                    let basicList = this.formatData(value.basicList);
                    let target = this.$refs.MyChart;
                    let thisList = this.formatData(value.thisList);
                    let target1 = this.$refs.MyChart1;
                    if(basicList){
                        this.drawChart({target,data:basicList});
                    }else{
                        this.drawChart({target,data:[]});
                    }
                    if(thisList){
                        this.drawChart({target:target1,data:thisList});
                    }else{
                        this.drawChart({target:target1,data:[]});
                    }
                });
            },
        },
    },
    methods:{
        formatData(data){  //格式化数据
            data = data || [];
            let data_ = {};
            data.forEach(item=>{
                data_[item.horizon] = data_[item.horizon] || [];
                data_[item.horizon].push(item);
            });
            data = data_;
            Object.keys(data).forEach(item=>{
                this.nameConfigMap[item] = this.nameConfigMap[item] || {
                    color:randomColor(),
                    symbol:randomEchartSymbol(),
                };
            });
            return data;
        },
        drawChart({target,data={}}){  //绘制表格
            let rem = computedRem();
            let color = this.fontColor;
            // let oval1 = new Oval([5,-20],[9.5,-20],[5,0]);  //椭圆1
            // let oval2 = new Oval([-1,-55],[3,-55],[-1,-37]);
            // let oval3 = new Oval([-9.3,-65],[-7,-40],[-11.5,-64.7]);
            target.setOption({
                grid: {
                    left: '10%',
                    right: '5%',
                    top: '15%',
                    bottom: '15%',
                },
                textStyle:{
                    fontSize:rem*1,
                    color:color
                },
                tooltip: {
                    trigger: 'item',
                    formatter: params=>{
                        if(!params.value) return;
                        return `${params.name}:</br>${params.value[0]},${params.value[1]}`;
                    },
                },
                xAxis: {
                    type: 'value',
                    name: '氧同位素，%',
                    nameGap: 30,
                    min:-15,
                    max:10,
                    nameLocation:'center',
                    nameTextStyle:{
                        fontWeight:'bold',
                        fontSize:1*rem,
                    },
                    splitArea: {
                        show: false,
                    },
                    splitLine: {
                        show: false,
                    },
                    axisLine: {
                        show:true,
                        lineStyle: {
                            color:'#B8DBFF',
                        },
                        onZero:false,
                    },
                    axisLabel:{  //x轴的标签设置
                        show:true,
                        lineStyle: {
                            color:'#B8DBFF',
                        },
                    },
                },
                yAxis: {
                    type: 'value',
                    name: '氢同位素，%',
                    nameGap: 35,
                    min:-100,
                    max:10,
                    nameLocation:'center',
                    nameTextStyle:{
                        fontWeight:'bold',
                        fontSize:1*rem,
                    },
                    splitArea: {
                        show: false,
                    },
                    axisLine: {
                        show:true,
                        lineStyle: {
                            color:'#B8DBFF',
                        },
                        onZero:false,
                    },
                    splitLine: {//分割线配置
                        show:false,
                        lineStyle: {
                            color: "#b8dbff63",
                        }
                    },
                },
                legend:{
                    type: 'scroll',
                    data: Object.keys(data).map(item=>{
                        return {
                            name: item,
                            icon: this.nameConfigMap[item].symbol,
                            itemStyle:{
                                color: this.nameConfigMap[item].color,
                            },
                            textStyle: {
                                color: this.nameConfigMap[item].color,
                            },
                        };
                    }),
                },
                series: [
                    ...Object.keys(data).map(item=>{
                        return {
                            symbolSize: 12,
                            name:item,
                            data: data[item].map(item_=>{
                                return {
                                    name:item,
                                    value:[item_.olon,item_.hlon],
                                    symbol:this.nameConfigMap[item].symbol,
                                    itemStyle:{
                                        color:this.nameConfigMap[item].color,
                                    },
                                };
                            }),
                            type: 'scatter'
                        };
                    }),
                    //凸包点位连线配置
                    ...Object.keys(data).map(item=>{
                        let hullPoint = getConvexHull(data[item].map(item_=>{
                            return [item_.olon,item_.hlon];
                        }));
                        hullPoint.push(hullPoint[0]);
                        return {
                            type: 'line',
                            showSymbol: false,
                            smooth: true,
                            silent:true,
                            lineStyle:{
                                color:this.nameConfigMap[item].color,
                                width:1,
                            },
                            data: hullPoint,
                        };
                    }),
                    //椭圆配置
                    // {
                    //     type: 'line',
                    //     showSymbol: false,
                    //     smooth: true,
                    //     silent:true,
                    //     lineStyle:{
                    //         color:this.fontColor,
                    //         width:1,
                    //     },
                    //     data: [...new Array(361).keys()].map((item,index)=>{
                    //         return oval1.getPoint(index);
                    //     }),
                    //     //标记线，文本配置
                    //     markLine: {
                    //         silent:true,
                    //         symbol:false,
                    //         animation:false,
                    //         label:{
                    //             color:this.fontColor,
                    //             fontWeight:'bold',
                    //             fontSize:1*rem,
                    //         },
                    //         data:[
                    //             [
                    //                 {
                    //                     name: '国际标准雨水线',
                    //                     coord: [-13, -100]
                    //                 },
                    //                 {
                    //                     coord: [0, 10]
                    //                 }
                    //             ],
                    //             [
                    //                 {
                    //                     name: '海洋沉积型地层水',
                    //                     coord: [5,-20]
                    //                 },
                    //                 {
                    //                     coord: [5,-20]
                    //                 }
                    //             ],
                    //             [
                    //                 {
                    //                     name: '海源沉积-大气降水叠加型地层水',
                    //                     coord: [-1,-55]
                    //                 },
                    //                 {
                    //                     coord: [-1,-55]
                    //                 }
                    //             ], 
                    //             [
                    //                 {
                    //                     name: '大气渗入淋滤型地层水',
                    //                     coord: [-9,-62]
                    //                 },
                    //                 {
                    //                     coord: [-9,-62]
                    //                 }
                    //             ], 
                    //         ],
                    //     },
                    // },
                    // {
                    //     type: 'line',
                    //     showSymbol: false,
                    //     smooth: true,
                    //     silent:true,
                    //     lineStyle:{
                    //         color:this.fontColor,
                    //         width:1,
                    //     },
                    //     data: [...new Array(361).keys()].map((item,index)=>{
                    //         return oval2.getPoint(index);
                    //     }),
                    // },
                    // {
                    //     type: 'line',
                    //     showSymbol: false,
                    //     smooth: true,
                    //     silent:true,
                    //     lineStyle:{
                    //         color:this.fontColor,
                    //         width:1,
                    //     },
                    //     data: [...new Array(361).keys()].map((item,index)=>{
                    //         return oval3.getPoint(index);
                    //     }),
                    // },
                ],
            });
        },
    },
};
</script>
<style scoped lang="scss">
.water-cp-container{
    width: 100%;
    height: fit-content;
    text-align: left;
    color: var(--font-color);
    box-sizing: border-box;
    border-collapse: collapse;
    border-color: var(--border-color);
    border: 1px solid var(--border-color);
    table-layout:fixed;
    >tr{
        >td{
            &:last-child{
                width: 50%;
            }
        }
    }
    >.top-container{
        >td{
            font-size: 1.5rem;
            font-weight: bold;
            padding: 1rem;
            box-sizing: border-box;
            line-height: 1;
            box-sizing: border-box;
        }
    }
    >.content-container{
        >.left{
            >.container{
                display: grid;
                grid-template-columns: 1fr;
                >.chart{
                    width: 100%;
                    height: 30rem;
                }
                >.base-data{
                    padding: 1rem 1rem 1rem 0;
                    box-sizing: border-box;
                    width: 100%;
                    text-align: center;
                    display: grid;
                    grid-gap: 1rem;
                    height: fit-content;
                    >.base-data-title{
                        font-size: 1.5rem;
                    }
                    >table{
                        width: 100%;
                        height: fit-content;
                        border-collapse: collapse;
                        border-color: #0f4b78;
                        border: 1px solid #0f4b78;
                        td,th{
                            padding: 1rem 0.5rem;
                            text-align: center;
                            font-size: 1rem;
                            box-sizing: border-box;
                        }
                        th{
                            font-size: 1rem;
                            font-weight: bold;
                        }
                        .cols2,.cols4,.cols6{
                            width: 50%;
                        }
                    }
                }
            }
        }
        .right-container{
            height: 100%;
            >.chart{
                width: 100%;
                height: 30rem;
            }
        }
    }
    >.bottom-container{
        >.container{
            padding: 1.5rem 1rem;
            font-size: 1.5rem;
            color: #99a9bf;
            box-sizing: border-box;
            span{
                font-size: 1.7rem;
                color: var(--font-color);
            }
            .data{
                font-size: 2rem;
                color: #00c57a;
                font-weight: bold;
            }
        }
    }
}
</style>